CosyOS-III API 用户参考手册  1.0.2
宏定义
计数信号量

计数信号量常用于事件同步、资源管理,是唯一能够实现并发事件同步的手段。 更多...

计数信号量 的协作图:

宏定义

#define uExternSem(sem)   sCSV_ExternSem(sem)
 声明计数信号量 更多...
 
#define uCreateSem(sem, init, max)   sCSV_CreateSem(sem, init, max)
 创建计数信号量 更多...
 
#define uGiveSem(sem)    sUSV_GiveSem(sem)
 给予计数信号量 更多...
 
#define uTakeSem(sem, tc)   sUSV_TakeSem(sem, tc)
 获取计数信号量 更多...
 
#define uBackSem(sem)    uGiveSem(sem)
 归还计数信号量 更多...
 

详细描述

计数信号量常用于事件同步、资源管理,是唯一能够实现并发事件同步的手段。

宏定义说明

#define uBackSem (   sem)    uGiveSem(sem)

归还计数信号量

参数
[in]sem计数信号量名称
返回
注解
同型服务:
tBackSem(sem)

在文件 ur_api.h966 行定义.

#define uCreateSem (   sem,
  init,
  max 
)    sCSV_CreateSem(sem, init, max)

创建计数信号量

参数
[in]sem计数信号量名称
[in]init计数信号量初始值
[in]max计数信号量最大值
返回

在文件 ur_api.h930 行定义.

#define uExternSem (   sem)    sCSV_ExternSem(sem)

声明计数信号量

参数
[in]sem计数信号量名称
返回

在文件 ur_api.h921 行定义.

#define uGiveSem (   sem)    sUSV_GiveSem(sem)

给予计数信号量

参数
[in]sem计数信号量名称
返回
注解
同型服务:
tGiveSem(sem)
iGiveSem(sem)

在文件 ur_api.h940 行定义.

#define uTakeSem (   sem,
  tc 
)    sUSV_TakeSem(sem, tc)

获取计数信号量

参数
[in]sem计数信号量名称
[in]tc滴答周期(超时时间)
+0:立即返回
~0:无限等待
返回
结果(bool)
返回值
false失败
true成功
注解
同型服务:
tTakeSem(sem)
警告
任务中获取,不支持在临界区中,包括任务临界区、服务层临界区、全局临界区,或关闭总中断时调用。
当用于资源同步时(互斥访问),当tc为~0时(无限等待),仍建议用户查询返回值,原因是
当在多个相同优先级的任务中获取同一个计数信号量时(采用时间片轮转调度),其返回结果仍然有失败的可能。

在文件 ur_api.h957 行定义.